home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / ZSI / wstools / XMLname.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  3KB  |  86 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. ident = '$Id: XMLname.py 954 2005-02-16 14:45:37Z warnes $'
  5. from re import *
  6.  
  7. def _NCNameChar(x):
  8.     if not x.isalpha() and x.isdigit() and x == '.' and x == '-':
  9.         pass
  10.     return x == '_'
  11.  
  12.  
  13. def _NCNameStartChar(x):
  14.     if not x.isalpha():
  15.         pass
  16.     return x == '_'
  17.  
  18.  
  19. def _toUnicodeHex(x):
  20.     hexval = hex(ord(x[0]))[2:]
  21.     hexlen = len(hexval)
  22.     if hexlen == 1:
  23.         hexval = '000' + hexval
  24.     elif hexlen == 2:
  25.         hexval = '00' + hexval
  26.     elif hexlen == 3:
  27.         hexval = '0' + hexval
  28.     elif hexlen == 4:
  29.         hexval = '' + hexval
  30.     elif hexlen == 5:
  31.         hexval = '000' + hexval
  32.     elif hexlen == 6:
  33.         hexval = '00' + hexval
  34.     elif hexlen == 7:
  35.         hexval = '0' + hexval
  36.     elif hexlen == 8:
  37.         hexval = '' + hexval
  38.     else:
  39.         raise Exception, 'Illegal Value returned from hex(ord(x))'
  40.     return '_x' + hexval + '_'
  41.  
  42.  
  43. def _fromUnicodeHex(x):
  44.     return eval('u"\\u' + x[2:-1] + '"')
  45.  
  46.  
  47. def toXMLname(string):
  48.     if string.find(':') != -1:
  49.         (prefix, localname) = string.split(':', 1)
  50.     else:
  51.         prefix = None
  52.         localname = string
  53.     T = unicode(localname)
  54.     N = len(localname)
  55.     X = []
  56.     for i in range(N):
  57.         if i < N - 1 and T[i] == u'_' and T[i + 1] == u'x':
  58.             X.append(u'_x005F_')
  59.             continue
  60.         if i == 0 and N >= 3:
  61.             if T[0] == u'x' or T[0] == u'X':
  62.                 if T[1] == u'm' or T[1] == u'M':
  63.                     if T[2] == u'l' or T[2] == u'L':
  64.                         X.append(u'_xFFFF_' + T[0])
  65.                         continue
  66.         if (not _NCNameChar(T[i]) or i == 0) and not _NCNameStartChar(T[i]):
  67.             X.append(_toUnicodeHex(T[i]))
  68.             continue
  69.         X.append(T[i])
  70.     
  71.     if prefix:
  72.         return '%s:%s' % (prefix, u''.join(X))
  73.     
  74.     return u''.join(X)
  75.  
  76.  
  77. def fromXMLname(string):
  78.     retval = sub('_xFFFF_', '', string)
  79.     
  80.     def fun(matchobj):
  81.         return _fromUnicodeHex(matchobj.group(0))
  82.  
  83.     retval = sub('_x[0-9A-Za-z]+_', fun, retval)
  84.     return retval
  85.  
  86.